package main

import "fmt"

//递归:函数自己调用自己
//递归适合处理那种问题相同 问题的规模越来越小的场景
//递归一定要用一个明确的退出条件

//计算n的阶乘
func f(n uint64) uint64 {

	if n <= 1 {
		return 1
	}
	return n * f(n-1)
}

//上台阶方法，n个台阶，一次一步，或一次两步
func taijie(n uint64) uint64 {
	if n == 1 {
		return 1 //只有一个台阶就一种走法
	}
	if n == 2 {
		return 2 //只有两个台阶就两种走法
	}
	return taijie(n-1) + taijie(n-2)
}

func main() {
	ret := f(5)
	fmt.Println(ret)

	fmt.Println(taijie(3))

}
